package com.jagochan.imchat.module.common.utils.redissonlock;


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 加了该注解的方法可以自动有分布式锁的功能
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface EnableRedissonLock {

    /**
     * key的前缀。默认是方法的全限定名
     */
    String prefixKey() default "";

    /**
     * 支持springEl表达式
     */
    String key () default "";

    /**
     * 等待锁的时间，默认不等待，直接失败
     */
    long waitTime() default -1;

    /**
     * 单位，默认毫秒
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
}
